/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package conn.dao;

import conn.bean.BAbonado;
import conn.bean.BCampana;
import conn.bean.BDepartamento;
import conn.bean.BFiltroAbonado;
import conn.bean.BProvincia;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;



/**
 *
 * @author root
 */
public class DAbonado extends DBase {

    /*SI EXISTE DEVUELVE SU ID, SINO DEVUELVE -1*/
    public int existeLineaAbonado(BAbonado abonado,String numero){
        int existe=-1;

        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT a.idAbonado from abonado a,linea l WHERE l.idAbonado=a.idAbonado and l.numero='"+numero+"' and a.nombre='"+abonado.getNombre()+"' and a.apellidoPaterno='"+abonado.getApellidop()+"' and a.apellidoMaterno='"+abonado.getApellidom()+"';");

            if (res.next()) {
                existe=res.getInt(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return existe;
    }

    public int getUltimoId() {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT MAX(idAbonado) from abonado");

            if (res.next()) {

                id = res.getInt(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return id;
    }

    public void crearAbonado(BAbonado abonado) {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            stmt.executeUpdate(""
                    + " INSERT INTO abonado "
                    + " (nombre,apellidoPaterno,apellidoMaterno,sexo,estadoCivil,fechaNacimiento,idDireccion)"
                    + " VALUES "
                    + " ('"+abonado.getNombre()+"','"+abonado.getApellidop()+"','"+abonado.getApellidom()+"','"+abonado.getSexo()+"','"+abonado.getEstcivil()+"','"+abonado.getFechanacimiento()+"',"+abonado.getDireccion().getIdDireccion()+");");

            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
    }

    public List filtrarabonado(String campana) {
        List Lista = new ArrayList();
        Statement stmt = null;
        ResultSet res = null;

        BFiltroAbonado bfiltroabonado = null;

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();

            if (campana == null ) {campana.equals(" ");}


            res = stmt.executeQuery(
                    "select a.idAbonado, a.nombre, a.apellidoPaterno, a.apellidoMaterno, " +
                    "a.sexo, a.estadoCivil, a.fechaNacimiento, d.descripcion, l.numero, tl.nombre " +
                    "from lineaxcampana lxc, campana c, tipolinea tl, direccion d, abonado a left join " +
                    "linea l on a.idAbonado = l.idAbonado where c.idCampana = lxc.idCampana and " +
                    "lxc.idLinea = l.idLinea and l.idAbonado = a.idAbonado and l.tipoLinea = tl.idTipoLinea and " +
                    "c.idCampana = '" + campana + "' group by numero;");

            while (res.next()) {


                bfiltroabonado = new BFiltroAbonado(res.getInt(1),res.getString(2),res.getString(3),res.getString(4),res.getString(5),
                                                    res.getString(6),res.getString(7),res.getString(8),res.getInt(9),res.getString(10));

                Lista.add(bfiltroabonado);

            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return Lista;
    }

    public List getProvincia(String departamento) {
        List lista = new ArrayList();
        BProvincia bprovincia = null;
        BDepartamento bdepartamento = null;
        String query = null;
        Statement stmt = null;
        ResultSet res = null;
        this.init_mysql();  // se inicia la conección a la base de datos

        try {
            stmt = conn.createStatement();

            res = stmt.executeQuery("Select idProvincia, descripcion, idDepartamento from provincia where idDepartamento = '" + departamento + "';");
            while (res.next()) {
                bdepartamento = new BDepartamento(res.getInt(1),null);
                bprovincia = new BProvincia(res.getInt(1), res.getString(2), bdepartamento);
                lista.add(bprovincia);
            }

            stmt.close();
            conn.close();
        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return lista;
    }

    


}
